Java基础知识
线程
线程安全(synchronized, volatile, 可重入锁)
多线程的实现方式(Thread, Runable, Callable, Future, FutureTask)
同步工具类(CountDownLatch, CyclicBarrier, Semaphore, BlockingQueue)
乐观锁和悲观锁(偏向锁, 轻量级锁, 重量级锁, CAS操作)
集合类
HashMap的实现原理,和Hashtable的比较
TreeMap, LinkedHashMap, concurrentHashMap, WeakHashMap
ArrayList, LinkedList的实现原理和区别
HashSet的实现原理
反射机制
动态代理机制(JDK自带的动态代理和CGLIB的动态代理)
序列化
IO
NIO
Buffer
Channel
Selector
netty
抽象类和接口(各自的特点和比较)
JVM虚拟机
内存模型(java 8 中的元空间)
垃圾回收机制
垃圾回收器
类文件结构
类加载机制
JVM性能调优
Spring
bean相关
控制反转
面向切面
事务管理(传播机制)
SpringMVC基本原理
数据库
SQL语法
MYSQL索引的实现
数据库的各种锁
死锁和如何避免死锁
ACID特性
数据库的隔离级别
SQL优化
JOIN的原理
Hebinate
分布式事务的一致性和JTA
XA协议,事务管理器,资源管理器
两阶段提交,三阶段提交协议, TCC
Spring下配置JTA
网络
TCP 三次握手/四次分手
三次:防止已失效的报文到达服务器端,浪费资源
四次:等待2MSL时间,确保自己发送的ACK已收到,确认对方已经关闭,自己再关闭
HTTP状态码
2XX:操作成功
3XX:重定向,301永久转移,302临时转移
4XX:客户端错误, 403禁止访问,404页面找不到
5XX:服务器端错误
Session和Cookie
- session在服务器端,cookie在客户端(浏览器);
- Session的运行依赖session id, 而 session id是存在cookie中的,也就是说,如果浏览器禁止了cookie,同时session也会失效(但是可以通过其它方式实现,比如在url中传递session id);
- Session可以放在文件、数据库或内存中都可以;
- 用户验证一般会用session;
- Cookie不是很安全,别人可以分析存在本地的cookie并进行cookie欺骗,考虑到安全应当使用session;
- Session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie;
- 单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie。